home *** CD-ROM | disk | FTP | other *** search
- 1000 ; combineddemo date: 10-03-88
- 1010 ;---------------------------------
- 1020 ;
- 1030 ; the final cartridge iii desktop
- 1040 ;
- 1050 ; riska h&p, marc derksen
- 1060 ;
- 1070 ; p r o j e c t d e m o
- 1080 ;
- 1090 ;---------------------------------
- 1100 ;
- 1110 *=$0be1,$0801
- 1120 buf0=$a3
- 1130 buf1=$a4
- 1140 gosub=$de05 ; system constants
- 1150 close=$01
- 1160 toback=$02
- 1170 dragbr=$08
- 1180 invert=$01
- 1190 status=$02
- 1200 bordr=$04
- 1210 release=$10
- 1220 toggle=$20
- 1230 exclude=$40
- 1240 string=$80
- 1250 ;
- 1260 ;------ basic startup data -----
- 1270 wor $0817,1987 ; line number
- 1280 byt $9e ; basic sys-code
- 1290 byt "2076 desk[164]p v1.0",0,0,0
- 1300 byt 1,0 ; version
- 1310 byt 4 ; size in blocks
- 1320 jmp $dfe8 ; startup
- 1330 byt 0 ; unused
- 1340 ;
- 1350 mn3=$c074
- 1360 mn3it1=$c0c2
- 1370 ;------ main ------------------
- 1380 start jsr survive
- 1390 ldx #<item1 ; set new menu
- 1400 ldy #>item1
- 1410 stx mn3+2
- 1420 sty mn3+3
- 1430 ldx #56+1 ; 7 menuitems
- 1440 ldy #64
- 1450 stx mn3+7
- 1460 sty mn3+8
- 1470 rts
- 1480 ;
- 1490 ;------ menuitem structure ---
- 1500 item1 wor item2 ; nextitem
- 1510 wor it1txt ; item name
- 1520 wor openwd1 ; item exec
- 1530 byt 1,0
- 1540 item2 wor item3
- 1550 wor it2txt
- 1560 wor openwd2
- 1570 byt 1,0
- 1580 item3 wor item4
- 1590 wor it3txt
- 1600 wor openwd3
- 1610 byt 1,0
- 1620 item4 wor item5
- 1630 wor it4txt
- 1640 wor openwd4
- 1650 byt 1,0
- 1660 item5 wor item6
- 1670 wor it5txt
- 1680 wor openwd5
- 1690 byt 1,0
- 1700 item6 wor item7
- 1710 wor it6txt
- 1720 wor openwd6
- 1730 byt 1,0
- 1740 item7 wor 0
- 1750 wor it7txt
- 1760 wor unlink
- 1770 byt 1,0
- 1780 ;
- 1790 it1txt byt "[206][207][210][205][193][204][160][199][193][196]",0
- 1800 it2txt byt "[212][207][199][199][204][197] [199][193][196]",0
- 1810 it3txt byt "[211][212][210][201][206][199][160][199][193][196]",0
- 1820 it4txt byt "[197][216][195][204][213][196][197] [199][193][196]",0
- 1830 it5txt byt "[212][197][216][212] [211][193][205][208][204][197]",0
- 1840 it6txt byt "[201][205][193][199] [211][193][205][208][204][197]",0
- 1850 it7txt byt "[213][206][204][201][206][203]",0
- 1860 ;
- 1870 ;
- 1880 ggflags1=invert+bordr+release
- 1890 ;------ window ---------------
- 1900 openwd1 ldx #<window1 ; normal
- 1910 ldy #>window1
- 1920 lda #openwindow
- 1930 jmp gosub
- 1940 ;
- 1950 window1 wor gadget1 ; first gad
- 1960 byt 20,20 ; wdx,wdy
- 1970 byt 110,50 ; width,height
- 1980 wor wdtitle ; window name
- 1990 byt close+toback+dragbr ; wdflags
- 2000 byt 66 ; wdtitle size
- 2010 wor 0,0
- 2020 ;
- 2030 gadget1 wor 0 ; next gadget
- 2040 byt 34,25 ; ggx,ggy
- 2050 byt 40,12 ; width,height
- 2060 wor ggtext1 ; gadget text
- 2070 byt ggflags1 ; gadget flags
- 2080 wor 0,0,0 ; gadget exec
- 2090 ;
- 2100 wdtitle byt "[205]y [215]indow",0
- 2110 ggtext1 byt 5,2,1,"[199]adget",0
- 2120 ;
- 2130 ;
- 2140 ggflags2=invert+bordr+release+toggle
- 2150 ;------ window ---------------
- 2160 openwd2 ldx #<window2 ; toggle
- 2170 ldy #>window2
- 2180 lda #openwindow
- 2190 jmp gosub
- 2200 ;
- 2210 window2 wor gadget2 ; first
- 2220 byt 20,80 ; wdx,wdy
- 2230 byt 110,50 ; width,height
- 2240 wor wdtitle ; window name
- 2250 byt close+toback+dragbr ; wdflags
- 2260 byt 66 ; wdtitle size
- 2270 wor 0,0
- 2280 ;
- 2290 gadget2 wor 0 ; next gadget
- 2300 byt 19,25 ; ggx,ggy
- 2310 byt 70,12 ; width,height
- 2320 wor ggtext2 ; gadget text
- 2330 byt ggflags2 ; gadget flags
- 2340 wor 0,0,0 ; gadget exec
- 2350 ;
- 2360 ggtext2 byt 5,2,1 ; text struc
- 2370 byt "[212]oggle [199]adget",0
- 2380 ;
- 2390 ;
- 2400 ggflags3=bordr+string
- 2410 ;------ window ---------------
- 2420 openwd3 ldx #<window3 ; string
- 2430 ldy #>window3
- 2440 lda #openwindow
- 2450 jmp gosub
- 2460 ;
- 2470 window3 wor gadget3 ; first gad
- 2480 byt 20,140 ; wdx,wdy
- 2490 byt 110,50 ; width,height
- 2500 wor wdtitle ; window name
- 2510 byt close+toback+dragbr ; wdflags
- 2520 byt 66 ; wdtitle size
- 2530 wor 0,0
- 2540 ;
- 2550 gadget3 wor 0 ; next gadget
- 2560 byt 17,30 ; ggx,ggy
- 2570 byt 73,9 ; width,height
- 2580 wor ggtext3 ; gadget text
- 2590 byt ggflags3 ; gadget flags
- 2600 wor 0,0,0 ; gadget exec
- 2610 byt 0 ; user free
- 2620 byt 9 ; 9 characters
- 2630 wor strinp ; input text
- 2640 ;
- 2650 ggtext3 byt 5,$f4,1 ; text struc
- 2660 byt "[211]tring [199]adget:",0
- 2670 strinp byt 2,1,1
- 2680 wor 0,0,0,0,0 ; 10 bytes input
- 2690 ;
- 2700 ;
- 2710 ggflags4=invert+bordr+toggle+exclude
- 2720 ;------ window ---------------
- 2730 openwd4 ldx #<window4 ; exclude
- 2740 ldy #>window4
- 2750 lda #openwindow
- 2760 jmp gosub
- 2770 ;
- 2780 window4 wor gadget41 ; first gad
- 2790 byt 165,20 ; wdx,wdy
- 2800 byt 110,50 ; width,height
- 2810 wor wdtitle ; window name
- 2820 byt close+toback+dragbr ; wdflags
- 2830 byt 66 ; wdtitle size
- 2840 wor 0,0
- 2850 ;
- 2860 gadget41 wor gadget42 ; next gad
- 2870 byt 18,30 ; ggx,ggy
- 2880 byt 22,13 ; width,height
- 2890 wor ggtext4 ; gadget text
- 2900 byt ggflags4 ; gadget flags
- 2910 wor 0,0,0 ; gadget exec
- 2920 byt 0 ; user free
- 2930 wor exclist ; exclude list
- 2940 ;
- 2950 gadget42 wor gadget43 ; next
- 2960 byt 44,30 ; ggx,ggy
- 2970 byt 22,13 ; width,height
- 2980 wor 0 ; gadget text
- 2990 byt ggflags4 ; gadget flags
- 3000 wor 0,0,0 ; gadget exec
- 3010 byt 0 ; user free
- 3020 wor exclist ; exclude list
- 3030 ;
- 3040 gadget43 wor 0 ; next gadget
- 3050 byt 70,30 ; ggx,ggy
- 3060 byt 22,13 ; width,height
- 3070 wor 0 ; gadget text
- 3080 byt ggflags4+status ; gad flags
- 3090 wor 0,0,0 ; gadget exec
- 3100 byt 0 ; user free
- 3110 wor exclist ; exclude list
- 3120 ;
- 3130 exclist wor gadget41 ; exclude
- 3140 wor gadget42
- 3150 wor gadget43
- 3160 wor 0
- 3170 ;
- 3180 ggtext4 byt 4,$f4,1 ; text struc
- 3190 byt "[205]utual [197]xclude",0
- 3200 ;
- 3210 ;
- 3220 ggflags5=invert+toggle+release
- 3230 ;------ window ---------------
- 3240 openwd5 ldx #<window5 ; ggtext
- 3250 ldy #>window5
- 3260 lda #openwindow
- 3270 jmp gosub
- 3280 ;
- 3290 window5 wor gadget5 ; first
- 3300 byt 150,77 ; wdx,wdy
- 3310 byt 140,55 ; width,height
- 3320 wor wdtitle ; window name
- 3330 byt close+toback+dragbr ; wdflags
- 3340 byt 66 ; wdtitle size
- 3350 wor 0,0
- 3360 ;
- 3370 gadget5 wor 0 ; next gadget
- 3380 byt 4,14 ; ggx,ggy
- 3390 byt 132,38 ; width,height
- 3400 wor 0 ; gadget text
- 3410 byt ggflags5 ; gadget flags
- 3420 wor ggspec ; called when gadget
- 3430 wor 0,0 ; is being drawn
- 3440 ;
- 3450 ;------ gadget spec ----------
- 3460 ggspec ldx #<text ; draw text
- 3470 ldy #>text
- 3480 lda #multiprint
- 3490 jmp gosub
- 3500 ;
- 3510 text ; multiple text structures
- 3520 byt 4,5,1,"normal",0
- 3530 byt 4,25,$81,"bold",0
- 3540 byt 58,5,$41
- 3550 byt "eexxtteennddeedd",0
- 3560 byt 58,18,$21,"double height",0
- 3570 byt 0 ; end of struc
- 3580 ;
- 3590 ;
- 3600 ggflags6=invert+release
- 3610 ;------ window ---------------
- 3620 openwd6 ldx #<window6 ; image
- 3630 ldy #>window6
- 3640 lda #openwindow
- 3650 jmp gosub
- 3660 ;
- 3670 window6 wor gadget6 ; first
- 3680 byt 165,140 ; wdx,wdy
- 3690 byt 110,50 ; width,height
- 3700 wor wdtitle ; window name
- 3710 byt close+toback+dragbr ; wdflags
- 3720 byt 66 ; wdtitle size
- 3730 wor 0,0
- 3740 ;
- 3750 gadget6 wor 0 ; next gadget
- 3760 byt 24,20 ; ggx,ggy
- 3770 byt 29,18 ; width,height
- 3780 wor ggtext6 ; gadget text
- 3790 byt ggflags6 ; gadget flags
- 3800 wor 0,0 ; gadget exec
- 3810 wor ggimage ; gadget data image
- 3820 ;
- 3830 ggtext6 byt 37,10,1,"[201][205][193][199][197]",0
- 3840 ggimage byt 2,2,<imdat,>imdat
- 3850 ;
- 3860 imdat byt 26-1,15-1,7,4
- 3870 byt $e0,$f1,$ff,$c0,$a0,$91,0,$40
- 3880 byt $a0,$91,$7e,64,$a0,$91,$42,64
- 3890 byt $a0,$91,$42,64,$a0,$91,$42,64
- 3900 byt $bf,$91,$7e,$40,$80,$11,0,$40
- 3910 byt $9f,$d1,$3f,$c0,$90,$51,$20,0
- 3920 byt $90,$51,$20,$00,$90,$55,$20,0
- 3930 byt $90,$5f,$20,$00,$90,$55,$20,0
- 3940 byt $f0,$7f,$e0,$00
- 3950 ;
- 3960 ;------ unlink ---------------
- 3970 unlink ldx #<window1 ; close wd
- 3980 ldy #>window1
- 3990 jsr closewd
- 4000 ldx #<window2
- 4010 ldy #>window2
- 4020 jsr closewd
- 4030 ldx #<window3
- 4040 ldy #>window3
- 4050 jsr closewd
- 4060 ldx #<window4
- 4070 ldy #>window4
- 4080 jsr closewd
- 4090 ldx #<window5
- 4100 ldy #>window5
- 4110 jsr closewd
- 4120 ldx #<window6
- 4130 ldy #>window6
- 4140 jsr closewd
- 4150 ldx #<mn3it1 ; remove menu
- 4160 ldy #>mn3it1
- 4170 stx mn3+2
- 4180 sty mn3+3
- 4190 ldx #24+1 ; 3 items
- 4200 ldy #56
- 4210 stx mn3+7
- 4220 sty mn3+8
- 4230 inc $8004 ; remove survive
- 4240 rts
- 4250 ;
- 4260 ;------ close window ---------
- 4270 closewd stx buf0
- 4280 sty buf1
- 4290 lda #wdonscreen ; if wd open
- 4300 jsr gosub
- 4310 iny
- 4320 beq not
- 4330 ldx buf0 ; then closewd
- 4340 ldy buf1
- 4350 lda #setcurwd
- 4360 jsr gosub
- 4370 lda #wdclose
- 4380 jsr gosub
- 4390 not rts
- 4400 ;
- 4410 ;------ reset survive --------
- 4420 survive ldx #6-1 ; install code
- 4430 slp lda tabel,x
- 4440 sta $8000,x
- 4450 dex
- 4460 bpl slp
- 4470 rts
- 4480 tabel wor start+3
- 4490 byt "mg87"
- 4500 ;
- 4510 ;------ includes -------------
- 4520 openwindow=48
- 4530 multiprint=69
- 4540 wdonscreen=70
- 4550 wdclose=65
- 4560 setcurwd=29
-